<?php
/**
 * Created by PhpStorm.
 * User: saboran
 * Date: 2016/12/20
 * Time: 14:26
 */


/**
 * 返回json数据格式
 *
 * @param $code
 * @param string $message
 * @param array $data
 * @return string
 */
function json($code, $message = '', $data = [])
{
    if (!is_numeric($code)) {
        return '';
    }
    $count = count($data);
    $res = [
        'code' => $code,
        'message' => $message,
        'count' => $count,
        'data' => $data
    ];
    return json_encode($res);
}

/**
 * 把用户输入的文本转义（主要针对特殊符号和emoji表情）
 * @param $str
 * @return mixed|string
 */
function userTextEncode($str){
    if(!is_string($str))return $str;
    if(!$str || $str=='undefined')return '';

    $text = json_encode($str); //暴露出unicode
    $text = preg_replace_callback("/(\\\u[ed][0-9a-f]{3})/i",function($str){
        return addslashes($str[0]);
    },$text); //将emoji的unicode留下，其他不动，这里的正则比原答案增加了d，因为我发现我很多emoji实际上是\ud开头的，反而暂时没发现有\ue开头。
    return json_decode($text);
}


/**
 * 解码上面的转义
 * @param $str
 * @return mixed
 */
function userTextDecode($str){
    $text = json_encode($str); //暴露出unicode
    $text = preg_replace_callback('/\\\\\\\\/i',function($str){
        return '\\';
    },$text); //将两条斜杠变成一条，其他不动
    return json_decode($text);
}
